-- 2022-8-1

--[[
    Lua语言提供了一组精简且常用的控制结构
    包括用于条件执行的if以及用于循环的while，repeat和for
    所有的控制结构语法上都有一个显示终结符：end
    用于终结if for while结构 until用于终结repeat结构
    
    控制结构的条件表达式的结果可以是任何值
    Lua语言将除false和nil以外的当作真
]]

--[[8.2.1 if then else
    -- if语句先测试其条件，并根据条件是否满足执行相应的then部分或else部分，else部分可选
    -- 要使用嵌套语句可以使用else if then
    -- Lua语言不支持switch语句
]]

--[[8.2.2 while
    --当条件为真，循环
    while ... do
    
    end
]]

--[[8.2.3 repeat
    -- repeat until循环执行到条件为真结束
    repeat
        ...
    until ...
]]

--[[8.2.4 数值for
    -- for有两种形式 数值型 泛型

    -- 数值型语法
    for var = exp1,exp2,exp3 do
        ...
    end

    -- 在这种循环在 var的值从exp1变化到exp2 增加exp3
    -- 默认exp3为1
    -- 若不想设置上限 设置exp2为math.huge
]]

--[[泛型for
    -- 泛型for遍历迭代函数返回的所有值
    -- 泛型for看似简单，但功能十分强大
    -- 使用恰当的迭代可以保证代码可读性的情况下遍历几乎所有的数据结构
    -- 当然我们也可以编写自己的迭代器，尽管泛型for的使用很简单，但编写迭代器却有不少细节需要注意
]]